<template>
  <div class="app-container">
    <upload-excel-component :on-success="handleSuccess" :before-upload="beforeUpload" />
  </div>
</template>

<script>
import { reqImportEmployee } from '@/api/employees'
import moment from 'moment'
export default {
  name: 'UploadExcel',
  data() {
    return {
    }
  },
  mounted() {
    // console.log(this.$route)
  },
  methods: {
    // 上传excel文件的文件大小的校验函数  1M
    beforeUpload(file) {
      const isLt1M = file.size / 1024 / 1024 < 1

      if (isLt1M) {
        return true
      }

      this.$message({
        message: '请上传1M内的excel文件.',
        type: 'warning'
      })
      return false
    },
    // 上传成功的函数, results是上传的excel文件的内容 header是上传的文件的表格的标题
    async handleSuccess({ results, header }) {
      console.log(results, header) // results虽然是数组包对象,但是对象的键都是中文
      // 需要讲results中对象的键全部转为英文,再去发送请求
      // console.log(results)
      // 1. 准备好中 英 对照关系
      if (this.$route.query.type === 'user') {
        const userRelations = {
          '入职日期': 'timeOfEntry',
          '手机号': 'mobile',
          '姓名': 'username',
          '转正日期': 'correctionTime',
          '工号': 'workNumber',
          '部门': 'departmentName'
        }
        // 2. 遍历results
        const res = results.map(item => { // item是每一个员工对象
          const obj = {}
          // 3. 遍历item对象
          for (const k in item) { // k是中文键
            const englishKey = userRelations[k] // 英文的键
            // console.log(item[k])
            // 4. 给obj追加键值对
            // 如果键是入职日期和转正日期, 将时间处理后再赋值
            if (englishKey === 'timeOfEntry' || englishKey === 'correctionTime') {
              obj[englishKey] = moment(this.formatExcelDate(item[k], '-')).add(1, 'days')
            } else {
              obj[englishKey] = item[k]
            }
          }
          return obj
        })
        //  5. 发送批量导入员工请求
        const { data } = await reqImportEmployee(res)
        console.log(data)
        // 6. 回到员工页面
        this.$router.go(-1)
      }

      if (this.$route.query.type === 'social') {
        console.log('上传社保的业务')
      }

      if (this.$route.query.type === 'salarys') {
        console.log('上传工资的业务')
      }
    },
    // 处理时间的处理函数
    // https://blog.csdn.net/HuangZeJunXXX/article/details/110724291
    formatExcelDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1) // 毫秒
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    }
  }
}
</script>

